package scala

object Demo28Implicit {
  def main(args: Array[String]): Unit = {
    /**
      * 显示类型转换
      *
      */


    val s: String = "1000"

    //显示转换
    val int: Int = s.toInt


    /**
      * 隐式转换
      * 1、隐式转换方法
      * 2、隐式转换变量
      * 3、隐式转换类
      *
      */


    def print(i: String): Unit = {
      println(i)
    }


    print("1000")

    print(1000.toString)

    /**
      * 隐式转换方法
      * 和方法名无关，和参数类型返回值类型有关
      * 可以隐式的将参数类型转换成返回值类型
      *
      * 在同一个作用域中只能有一个参数类型和返回值类型一样的隐式转换方法
      *
      */

    implicit def intToString(i: Int): String = {
      println("隐式转换方法被调用")
      i.toString
    }

    implicit def doubleToString1(i: Double): String = {
      println("隐式转换方法被调用")
      i.toString
    }

    print(1000)

    print(100)

    //在当前作用域中可以将Int 当成String 来用

    100.split("")


  }
}
